Remote computing systems can enable users to remotely access hosted resources. Servers on the remote computing systems can execute programs and transmit signals indicative of a user interface to clients that can connect by sending signals over a network conforming to a communication protocol such as the TCP/IP protocol. Each connecting client may be provided a remote presentation session, i.e., an execution environment that includes a set of resources. Each client can transmit signals indicative of user input to the server and the server can apply the user input to the appropriate session. The clients may use remote presentation protocols such as the Remote Desktop Protocol (RDP) to connect to a server resource. Protocols such as RDP typically handle graphics, device traffic such as USB, printer keyboard and mouse and in addition, virtual channels for application between server and a client. The terminal server hosts client sessions which can be in hundreds in a typical server configuration.
In a remote/virtual desktop environment, the amount of remote presentation data being transmitted can vary during the course of a remote user session. Such a remote session may be established over a network link and the type of data exchanged with the remote user device may include graphics, audio and other types of data. The link quality between client and server may vary in bandwidth, latency and/or loss. Remote presentation protocols typically rely on fixed/static sized buffers for networking traffic and if these are incorrectly sized they lead to either insufficient network usage or excess queuing in the network, both of which negatively affect user experience.